Finding faults in multi-threaded programs
نویسنده
چکیده
Multi-threaded programming creates the fundamental problem that the execution of a program is no longer deterministic, because the thread schedule is not controlled by the application. This causes traditional testing methods to be rather ineffective. Trilogy, producing many multi-threaded server programs, also has to deal with the limitations of regression testing. New approaches to this problem – static and extended dynamic checking – promise to ameliorate the situation. Many tools are in development that try to find faults in multi-threaded programs in new ways. The first part of this report describes a detailed evaluation of a wide variety of dynamic and static checkers. That comparison always had the applicability to industrial software in mind. While none of the checking tools was a clear winner, certain tools are more useful in practice than others. Because simple cases are the most common ones in practice, the decision was made to extend Jlint, a simple, fast static Java program checker. The new Jlint can now also check for deadlocks in synchronized blocks in Java, which results in improved faultfinding capabilities. The extensions and their usefulness in an industrial environment are described in the second part of the report. Jlint has been applied to many core packages of Trilogy, and also a few other software packages, and shown various degrees of success.
منابع مشابه
Applying Static Analysis to Large-Scale, Multi-Threaded Java Programs
Static analysis is a tremendous help when trying to find faults in complex software. Writing multi-threaded programs is difficult, because the thread scheduling increases the program state space exponentially, and an incorrect thread synchronization produces faults that are hard to find. Program checkers have become sophisticated enough to find faults in real, large-scale software. In particula...
متن کاملSound, Precise and Efficient Static Race Detection for Multi-Threaded Programs
Title of dissertation: Sound, precise and efficient static race detection for multi-threaded programs Polyvios Pratikakis Doctor of Philosophy, 2008 Dissertation directed by: Professor Michael Hicks Professor Jeffrey S. Foster Department of Computer Science Multi-threaded programming is increasingly relevant due to the growing prevalence of multi-core processors. Unfortunately, the non-determin...
متن کاملDistributed Verification of Multi-threaded C++ Programs
Verification of multi-threaded C++ programs poses three major challenges: the large number of states, states with huge sizes, and time intensive expansions of states. This paper presents our efforts in addressing these issues by combining an efficient use of hard disk with the distribution of the state space on several computing nodes. The approach is applicable to clusters and multi-core machi...
متن کاملPartial Redundancy Elimination for Multi-threaded Programs
Multi-threaded programs have many applications which are widely used such as operating systems. Analyzing multi-threaded programs differs from sequential ones; the main feature is that many threads execute at the same time. The effect of all other running threads must be taken in account. Partial redundancy elimination is among the most powerful compiler optimizations: it performs loop-invarian...
متن کاملCase Study: Using Inspect to Verify and fix bugs in a Work Stealing Deque Simulator
Writing bug-free multi-threaded programs is hard. Bugs in these programs have various types such as deadlock, live lock, race condition, starvation, and so on. These bugs are hard to be detected because that they may only be excited by certain interleaving of instructions. Most of time, we can not find the bugs by only observing the program outputs since the buggy interleaving of instructions w...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2001